#!/usr/bin/env python

### RPC_SERVER
bld.SAMBA3_SUBSYSTEM('rpc',
                    source='',
                    deps='dcerpc-server-core')

bld.SAMBA3_SUBSYSTEM('RPC_CONFIG',
                    source='rpc_config.c',
                    deps='talloc')

bld.SAMBA3_SUBSYSTEM('RPC_NCACN_NP',
                    source='rpc_ncacn_np.c rpc_handles.c rpc_contexts.c',
                    deps='RPC_CONFIG auth common_auth npa_tstream')

bld.SAMBA3_SUBSYSTEM('RPC_SERVER_LOOP',
                    source='rpc_server.c',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('SRV_ACCESS_CHECK',
                    source='srv_access_check.c',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_SERVER',
                    source='srv_pipe_hnd.c srv_pipe.c',
                    deps='''
                    dcerpc-server-core
                    RPC_CONFIG
                    RPC_NCACN_NP
                    RPC_SERVER_LOOP
                    NDR_NAMED_PIPE_AUTH
                    ''')

bld.SAMBA3_SUBSYSTEM('RPC_MODULES',
                    source='rpc_modules.c',
                    deps='samba-util')

### RPC_SERVICES
bld.SAMBA3_SUBSYSTEM('RPC_DSSETUP',
                    source='''dssetup/srv_dssetup_nt.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_EPMAPPER',
                    source='''epmapper/srv_epmapper.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_FSS_STATE',
                    source='''fss/srv_fss_state.c''',
                    deps='samba-util NDR_FSRVP_STATE')

bld.SAMBA3_SUBSYSTEM('RPC_FSS_AGENT',
                    source='''fss/srv_fss_agent.c''',
                    deps='samba-util RPC_FSS_STATE')

bld.SAMBA3_SUBSYSTEM('RPC_EVENTLOG',
                    source='''eventlog/srv_eventlog_nt.c
                    eventlog/srv_eventlog_reg.c''',
                    deps='LIBEVENTLOG LIBCLI_WINREG_INTERNAL')

bld.SAMBA3_SUBSYSTEM('RPC_INITSHUTDOWN',
                    source='''initshutdown/srv_initshutdown_nt.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_LSARPC',
                    source='''lsa/srv_lsa_nt.c''',
                    deps='SRV_ACCESS_CHECK LIBLSA GNUTLS_HELPERS')

bld.SAMBA3_SUBSYSTEM('RPC_NETDFS',
                    source='''dfs/srv_dfs_nt.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_NETLOGON',
                     source='''netlogon/srv_netlog_nt.c''',
                    deps='LIBCLI_AUTH')

bld.SAMBA3_SUBSYSTEM('RPC_NTSVCS',
                    source='''ntsvcs/srv_ntsvcs_nt.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_RPCECHO',
                    source='''echo/srv_echo_nt.c''',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_SAMR',
                    source='''samr/srv_samr_nt.c
                    samr/srv_samr_util.c
                    samr/srv_samr_chgpasswd.c''',
                    deps='PLAINTEXT_AUTH SRV_ACCESS_CHECK')

bld.SAMBA3_SUBSYSTEM('RPC_SPOOLSS',
                    source='''spoolss/srv_spoolss_nt.c
                    spoolss/srv_spoolss_util.c''',
                    deps='PRINTING PRINTBACKEND LIBCLI_WINREG_INTERNAL')

bld.SAMBA3_SUBSYSTEM('RPC_IREMOTEWINSPOOL',
                    source='''
                    spoolss/srv_iremotewinspool_nt.c
                    spoolss/srv_iremotewinspool.c
                    ''',
                    deps='RPC_SPOOLSS')

bld.SAMBA3_SUBSYSTEM('RPC_SRVSVC',
                    source='''srvsvc/srv_srvsvc_nt.c''',
                    deps='samba-util tdb')

bld.SAMBA3_SUBSYSTEM('RPC_SVCCTL',
                    source='''svcctl/srv_svcctl_nt.c
                    svcctl/srv_svcctl_reg.c''',
                    deps='SERVICES LIBCLI_WINREG_INTERNAL')

bld.SAMBA3_SUBSYSTEM('RPC_WINREG',
                    source='''winreg/srv_winreg_nt.c''',
                    deps='REG_FULL REGFIO NDR_PERFCOUNT')

bld.SAMBA3_SUBSYSTEM('RPC_WKSSVC',
                    source='''wkssvc/srv_wkssvc_nt.c''',
                    deps='LIBNET')

bld.SAMBA3_SUBSYSTEM('mdssvc',
                    source='''
                    mdssvc/dalloc.c
                    mdssvc/marshalling.c
                    ''')

rpc_mdssvc_sources = '''
                     mdssvc/mdssvc.c
                     mdssvc/mdssvc_noindex.c
                     mdssvc/srv_mdssvc_nt.c
                     '''
rpc_mdssvc_deps = 'mdssvc samba-util '

if bld.env.spotlight_backend_tracker:
    rpc_mdssvc_sources += '''
                          mdssvc/mdssvc_tracker.c
                          mdssvc/sparql_mapping.c
                          mdssvc/sparql_parser.y
                          '''
    rpc_mdssvc_deps += 'tevent-glib-glue ' + bld.env['libtracker']
    # flex adds "#line nnn <stdout>" to the generated source
    # which then causes issues with lcov, so need to filter out those
    # lines. We need to use a different target name, as the default flex rule
    # will also build sparql_lexer.lex.c
    bld.SAMBA_GENERATOR(
        "sparql_lexer.gcov.lex.c",
        group='build_source',
        source="mdssvc/sparql_lexer.l",
        target="mdssvc/sparql_lexer.gcov.lex.c",
        rule='${FLEX} ${FLEXFLAGS} ${SRC} |'
             'grep -v "#line.*<stdout>" >${TGT}')
    rpc_mdssvc_sources += ' mdssvc/sparql_lexer.gcov.lex.c'

if bld.env.spotlight_backend_es:
    rpc_mdssvc_sources += '''
                          mdssvc/mdssvc_es.c
                          mdssvc/es_mapping.c
                          mdssvc/es_parser.y
                          '''
    rpc_mdssvc_deps += ' http jansson'

    # flex adds "#line nnn <stdout>" to the generated source
    # which then causes issues with lcov, so need to filter out those
    # lines. We need to use a different target name, as the default flex rule
    # will also build es_lexer.lex.c
    bld.SAMBA_GENERATOR(
        "es_lexer.gcov.lex.c",
        group='build_source',
        source="mdssvc/es_lexer.l",
        target="mdssvc/es_lexer.gcov.lex.c",
        rule='${FLEX} ${FLEXFLAGS} ${SRC} |'
             'grep -v "#line.*<stdout>" >${TGT}')
    rpc_mdssvc_sources += ' mdssvc/es_lexer.gcov.lex.c'

    if bld.SAMBA3_IS_ENABLED_MODULE('rpc_mdssvc_module'):
        bld.INSTALL_FILES(bld.env.SAMBA_DATADIR,
                          'mdssvc/elasticsearch_mappings.json')

bld.SAMBA3_MODULE('rpc_mdssvc_module',
                  subsystem='rpc',
                  allow_undefined_symbols=True,
                  source=rpc_mdssvc_sources,
                  init_function='',
                  deps=rpc_mdssvc_deps,
                  internal_module=bld.SAMBA3_IS_STATIC_MODULE('rpc_mdssvc_module'),
                  enabled=bld.SAMBA3_IS_ENABLED_MODULE('rpc_mdssvc_module'))

# RPC_SERVICE
bld.SAMBA3_SUBSYSTEM('RPC_SERVER_REGISTER',
                    source='rpc_ep_register.c ../librpc/rpc/dcerpc_ep.c',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('RPC_SERVICE',
                    source='rpc_service_setup.c',
                    deps='''
                    rpc
                    RPC_SERVER
                    RPC_SERVER_REGISTER
		    RPC_MODULES
                    RPC_SAMR
                    RPC_LSARPC
                    RPC_WINREG
                    RPC_INITSHUTDOWN
                    RPC_DSSETUP
                    RPC_WKSSVC
                    RPC_SVCCTL
                    RPC_NTSVCS
                    RPC_NETLOGON
                    RPC_NETDFS
                    RPC_SRVSVC
                    RPC_SPOOLSS
                    RPC_IREMOTEWINSPOOL
                    RPC_EVENTLOG
                    RPC_RPCECHO
                    RPC_SERVER
                    RPC_EPMAPPER
		    RPC_FSS_AGENT
                    ''')

# RPC_DAEMONS
bld.SAMBA3_SUBSYSTEM('RPC_SOCK_HELPER',
                    source='rpc_sock_helper.c',
                    deps='RPC_SERVER_REGISTER')

bld.SAMBA3_SUBSYSTEM('EPMD',
                    source='epmd.c',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('LSASD',
                    source='lsasd.c',
                    deps='RPC_SOCK_HELPER samba-util')

bld.SAMBA3_SUBSYSTEM('FSSD',
                    source='fssd.c',
                    deps='samba-util')

bld.SAMBA3_SUBSYSTEM('MDSSD',
                    source='mdssd.c',
                    deps='RPC_SOCK_HELPER RPC_MODULES samba-util tevent-glib-glue',
                    enabled=bld.env.with_spotlight)
